package com.group9.handinhand.service;

import java.util.List;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.group9.handinhand.dao.model.Event;
import com.group9.handinhand.service.so.CommunitySO;
import com.group9.handinhand.service.so.EventAttenderSO;
import com.group9.handinhand.service.so.EventPostSO;
import com.group9.handinhand.service.so.EventSO;
import com.group9.handinhand.service.so.UserSO;
import com.group9.handinhand.service.so.UserTagSO;
/**
 * 
 * Interface that defines the event service.
 *
 */
public interface EventService {
	
	static final Logger logger = LoggerFactory.getLogger(EventService.class);

	public EventSO saveEvent(EventSO so, UserSO user, Long communityId);

	public EventSO getEventById(Long eventId);
	
	public void updateEvent(EventSO event);
	
	public List<EventSO> getEventsByUser(UserSO user);
	
	public EventPostSO saveEventPost(Long eventId,Long userId, String post);

	public EventAttenderSO getEventAttenderByEventIdAndUserId(Long eventId, Long id);

	public EventAttenderSO saveEventAttender(Long eventId, Long userId);

	void deleteEventAttender(Long eventId, Long userId);
	
	public List<EventSO> getEventsByTag(UserTagSO tag);
	
	public List<EventSO> getEventsByCommunityId(Long communityId);
	
	public EventSO getModeratedEventByEventIdAndUserId(Long eventId, Long userid);
	
	public List<EventSO> getEventsByTagName(String keyword);
	
	public List<EventSO> getEventsByName(String keyword);
	
	public List<UserSO> getModeratorsByEventId(Long eventId);


}